package vo

import "io"

type CreateConfigReq struct {
	UserID           string      `json:"-"`
	IsAdmin          bool        `json:"-"`
	Name             string      `json:"name"`
	Describe         string      `json:"describe"`
	Kind             string      `json:"kind"`
	Version          string      `json:"version"`
	Platform         string      `json:"platform"`
	Label            string      `json:"label"`
	DetailRepoKey    string      `json:"-"`
	DetailRepoValues interface{} `json:"detail_values"`
	FileName         string      `json:"-"`
	FileReader       io.Reader   `json:"-"`
}

type CreateInstanceReq struct {
	Name          string `json:"name"`
	UserID        string `json:"-"`
	ConfigID      string `json:"config_id"`
	InstanceLabel string `json:"instance_label"`
}

type ImportInstanceReq struct {
	UserID     string                 `json:"user_id"`
	Platform   string                 `json:"platform"`
	Guid       string                 `json:"guid"`
	AgentGuid  string                 `json:"agent_guid"`
	Name       string                 `json:"name"`
	Describe   string                 `json:"describe"`
	Version    string                 `json:"version"`
	Containers map[string]interface{} `json:"containers"`
}

type InstanceContinaerAgentReq struct {
	Guid      string `json:"guid"`
	Container string `json:"container"`
}

type UpdateConfigReq struct {
	UserID   string
	ConfigID string
	Name     string
	Describe string
}

type DeleteConfigReq struct {
	ConfigID string
}

type AgentRegisterReq struct {
	Platform   string      `json:"platform"`
	HostName   string      `json:"host_name"`
	AreaID     string      `json:"area_id"`
	Role       string      `json:"role"`
	DetailInfo interface{} `json:"detail_info"`
}

type AgentPutConfigReq struct {
	Guid       string      `json:"guid"`
	ConfigInfo interface{} `json:"config"`
}

type CreateAreaReq struct {
	Country  string
	Province string
	City     string
	County   string
}

type CreateUserReq struct {
	Name  string
	ToKen string
}

type InstanceReport struct {
	Guid string      `json:"guid" yaml:"guid"`
	Op   string      `json:"operate" yaml:"operate"`
	Data interface{} `json:"data" yaml:"data"`
}
